RPT(r28), RPT(r29), RPT(r30), RPT(r31)
};
+#ifndef XEN
static u16 fr_info[32]={
0, /* constant : WE SHOULD NEVER GET THIS */
0, /* constant : WE SHOULD NEVER GET THIS */
}
# undef F
}
+#endif /* XEN */
static inline unsigned long
rotate_reg (unsigned long sor, unsigned long rrb, unsigned long reg)
void
set_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long val, unsigned long nat)
{
- struct switch_stack *sw = (struct switch_stack *) regs - 1;
- unsigned long *bsp, *bspstore, *addr, *rnat_addr, *ubs_end;
+ unsigned long *bsp, *bspstore, *addr, *rnat_addr;
unsigned long *kbs = (void *) current + IA64_RBS_OFFSET;
- unsigned long rnats, nat_mask;
+ unsigned long nat_mask;
unsigned long old_rsc,new_rsc;
- unsigned long on_kbs,rnat;
+ unsigned long rnat;
long sof = (regs->cr_ifs) & 0x7f;
long sor = 8 * ((regs->cr_ifs >> 14) & 0xf);
long rrb_gr = (regs->cr_ifs >> 18) & 0x7f;
new_rsc=old_rsc&(~0x3);
ia64_set_rsc(new_rsc);
- bspstore = ia64_get_bspstore();
+ bspstore = (unsigned long*)ia64_get_bspstore();
bsp =kbs + (regs->loadrs >> 19);//16+3
addr = ia64_rse_skip_regs(bsp, -sof + ridx);
ia64_flushrs ();
ia64_mf ();
*addr = val;
- bspstore = ia64_get_bspstore();
+ bspstore = (unsigned long*)ia64_get_bspstore();
rnat = ia64_get_rnat ();
if(bspstore < rnat_addr){
rnat=rnat&(~nat_mask);
static void
-get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, unsigned long *nat)
+get_rse_reg (struct pt_regs *regs, unsigned long r1, unsigned long *val, int*nat)
{
- struct switch_stack *sw = (struct switch_stack *) regs - 1;
- unsigned long *bsp, *addr, *rnat_addr, *ubs_end, *bspstore;
+ unsigned long *bsp, *addr, *rnat_addr, *bspstore;
unsigned long *kbs = (void *) current + IA64_RBS_OFFSET;
- unsigned long rnats, nat_mask;
- unsigned long on_kbs;
+ unsigned long nat_mask;
unsigned long old_rsc, new_rsc;
long sof = (regs->cr_ifs) & 0x7f;
long sor = 8 * ((regs->cr_ifs >> 14) & 0xf);
new_rsc=old_rsc&(~(0x3));
ia64_set_rsc(new_rsc);
- bspstore = ia64_get_bspstore();
+ bspstore = (unsigned long*)ia64_get_bspstore();
bsp =kbs + (regs->loadrs >> 19); //16+3;
addr = ia64_rse_skip_regs(bsp, -sof + ridx);
ia64_flushrs ();
ia64_mf ();
- bspstore = ia64_get_bspstore();
+ bspstore = (unsigned long*)ia64_get_bspstore();
}
*val=*addr;
if(nat){
if(bspstore < rnat_addr){
- *nat=!!(ia64_get_rnat()&nat_mask);
+ *nat=(int)!!(ia64_get_rnat()&nat_mask);
}else{
- *nat = !!((*rnat_addr)&nat_mask);
+ *nat = (int)!!((*rnat_addr)&nat_mask);
}
ia64_set_rsc(old_rsc);
}
return rotate_reg(96, rrb_fr, (regnum - IA64_FIRST_ROTATING_FR));
}
+#ifndef XEN
static void
setfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs)
{
regs->cr_ipsr |= IA64_PSR_MFL;
}
}
+#endif /* XEN */
/*
* Those 2 inline functions generate the spilled versions of the constant floating point
ia64_stf_spill(final, 1);
}
+#ifndef XEN
static void
getfpreg (unsigned long regnum, struct ia64_fpreg *fpval, struct pt_regs *regs)
{
}
}
}
+#endif /* XEN */
#ifdef XEN
*nat = (*unat >> (addr >> 3 & 0x3f)) & 0x1UL;
}
+#ifndef XEN
static void
emulate_load_updates (update_t type, load_store_t ld, struct pt_regs *regs, unsigned long ifa)
{
return 0;
}
+#endif /* XEN */
/*
* floating point operations sizes in bytes
ia64_stfd(final, 6);
}
+#ifndef XEN
static int
emulate_load_floatpair (unsigned long ifa, load_store_t ld, struct pt_regs *regs)
{
return 0;
}
+#endif /* XEN */
void
ia64_handle_unaligned (unsigned long ifa, struct pt_regs *regs)